#define _CRT_SECURE_NO_WARNINGS 1
#include"Heap.h"
////堆排序
//void Swap(int* a, int* b)
//{
//	int tmp = *a;
//	*a = *b;
//	*b = tmp;
//}
//void AdjustDown(int* a, int n, int parent)//建大堆:大堆代表最上面的数最大
//{
//	int child = parent * 2 + 1;
//	while (child < n)
//	{
//		if (child + 1 < n && a[child] < a[child + 1])
//		{
//			child++;
//		}
//		if (a[parent] < a[child])
//		{
//			Swap(&a[parent], &a[child]);
//			parent = child;
//			child = parent * 2 + 1;
//		}
//		else
//		{
//			break;
//		}
//	}
//}
//void HeapSort(int* a, int n)
//{
//	for (int i = (n - 1 - 1) / 2; i >= 0; --i)
//	{
//		AdjustDown(a, n, i);
//	}
//	int end = n - 1;
//	while (end)
//	{
//		Swap(&a[0], &a[end]);
//		AdjustDown(a, end, 0);
//		end--;
//	}
//
//}
//int main()
//{
//	int a[] = { 9,8,7,6,5,4,3,2,1,0 };
//	int sz = sizeof(a) / sizeof(a[0]);
//	/*for (int i = (sz - 1 - 1) / 2; i >= 0; --i)
//	{
//		AdjustDown(a, sz, i);
//	}*/
//	HeapSort(a, sz);
//	for (int i = 0; i < sz; i++)
//	{
//		printf("%d  ", a[i]);
//	}
//	return 0;
//}


//堆排序
//void HeapSort(int* a, int n)
//{
//	for (int i = (n - 1 - 1) / 2; i >= 0; --i)
//	{
//		AdjustDown(a, n, i);
//	}
//
//	int end = n - 1;
//	while (end > 0)
//	{
//		Swap(&a[0], &a[end]);
//		--end;
//		AdjustDown(a, end, 0);
//	}
//}


void TopK()
{
	//找出N个数里面最大/最小的/前k个
}
int main()
{
	int a[] = { 15,18,28,34,65,19,49,25,37,27};
	int sz = sizeof(a) / sizeof(a[0]);
	//HeapSort(a, sz);
	HP hp;
	HeapInit(&hp, a, sz);
	HeapPush(&hp, 8);
	HeapPush(&hp, 88);
	HeapPush(&hp, 888);
	HeapPrint(&hp);
	HeapPop(&hp);
	HeapPrint(&hp);


	return 0;
}